#include <bits/stdc++.h>

using namespace std;

class Solution
{
public:
    // vector<int> intersection(vector<int> &nums1, vector<int> &nums2)
    // {
    //     unordered_set<int> set;
    //     unordered_set<int> set_res;
    //     vector<int> res;
    //     for (auto num : nums1)
    //     {
    //         if (set.find(num) != set.end())
    //         {
    //             continue;
    //         }
    //         else
    //         {
    //             set.insert(num);
    //         }
    //     }
    //     for (auto num : nums2)
    //     {
    //         if (set.find(num) != set.end())
    //         {
    //             set_res.insert(num);
    //         }
    //     }
    //     for (auto it = set_res.begin(); it != set_res.end(); it++)
    //     {
    //         res.push_back(*it);
    //     }
    //     return res;
    // }

    // vector<int> intersection(vector<int> &nums1, vector<int> &nums2)
    // {
    //     unordered_set<int> set(nums1.begin(), nums1.end());
    //     unordered_set<int> set_res;
    //     for (auto num : nums2)
    //     {
    //         if (set.find(num) != set.end())
    //         {
    //             set_res.insert(num);
    //         }
    //     }
    //     return vector<int>(set_res.begin(), set_res.end());
    // }

    vector<int> intersection(vector<int> &nums1, vector<int> &nums2)
    {
        unordered_set<int> set;
        int arr[1005];
        for (auto num : nums1)
        {
            arr[num] = 1;
        }
        for (auto num : nums2)
        {
            if (arr[num] == 1)
            {
                set.insert(num);
            }
        }

        return vector<int>(set.begin(), set.end());
    }
};

int main()
{
    Solution sol;
    vector<int> vec1{4, 9, 5};
    vector<int> vec2{9, 4, 9, 8, 4};
    vector<int> res = sol.intersection(vec1, vec2);
    for (auto num : res)
    {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}